﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using SW_SoftBully.Models.ModuloVentas.Propiedades;
using System.Data.SqlClient;
using System.Configuration;
namespace SW_SoftBully.Models.ModuloVentas.Propiedades
{
    public class PropiedadesFacade
    {
        public string globalauxiliar;
        public string RegistrarPropiedad(PropiedadesBean propiedad) {
            try {
                String cadenaConfiguracion = ConfigurationManager.ConnectionStrings["SoftBully"].ConnectionString;
                SqlConnection sqlCon = new SqlConnection(cadenaConfiguracion);
                sqlCon.Open();

                
                string commandString = "INSERT INTO propiedad_en_venta (Direccion, PrecioBase, Estado, Area, FechaRegistro, Comision) VALUES('" + propiedad.direccion + "', " + propiedad.precio_base + ", " + this.transformarEstado(propiedad.estado) +", " + propiedad.area + " , GETDATE(), 1000.00)";               
                SqlCommand sqlCmd = new SqlCommand(commandString, sqlCon);             
                sqlCmd.ExecuteNonQuery();              
                sqlCon.Close();
                propiedad.conexion = "OK";
            
            }catch(Exception e){
                return e.ToString();
            }
            return propiedad.conexion;
        }
        public string eliminarPropiedad(PropiedadesBean propiedad) {
            try
            {
                String cadenaConfiguracion = ConfigurationManager.ConnectionStrings["SoftBully"].ConnectionString;
                SqlConnection sqlCon = new SqlConnection(cadenaConfiguracion);
                sqlCon.Open();


                string commandString = "UPDATE propiedad_en_venta SET Estado = 0 WHERE Id_Propiedad = "+propiedad.id_propiedad ;
                SqlCommand sqlCmd = new SqlCommand(commandString, sqlCon);
                sqlCmd.ExecuteNonQuery();
                sqlCon.Close();
                propiedad.conexion = "OK";

            }
            catch (Exception e)
            {
                return e.ToString();
            }
            return propiedad.conexion;
        }
        public List<PropiedadesBean> ListarPropiedades(PropiedadesBean propiedad)
        {
            try
            {
                List<PropiedadesBean> lista = new List<PropiedadesBean>();

                String cadenaConfiguracion = ConfigurationManager.ConnectionStrings["SoftBully"].ConnectionString;

                SqlConnection sqlCon = new SqlConnection(cadenaConfiguracion);

                sqlCon.Open();
                this.get_commandString(propiedad);
                string commandString = this.globalauxiliar;
                //string commandString = "SELECT Id_Propiedad, Direccion, PrecioBase, Comision, Estado, FechaRegistro, Area, Nro_Documento_vendedor FROM propiedad_en_venta WHERE (Estado < > 0) AND ((Direccion LIKE'%" + propiedad.direccion.Trim() + "%')AND(Estado=" + this.transformarEstado(propiedad.estado) + ")))";

                SqlCommand sqlCmd = new SqlCommand(commandString, sqlCon);

                SqlDataReader dataReader = sqlCmd.ExecuteReader();

                while (dataReader.Read())
                {
                    PropiedadesBean  la_propiedad = new PropiedadesBean();
                    la_propiedad.id_propiedad = Convert.ToString(dataReader["Id_Propiedad"]);
                    la_propiedad.direccion = Convert.ToString(dataReader["Direccion"]);
                    la_propiedad.precio_base = Convert.ToString(dataReader["PrecioBase"]);
                    la_propiedad.comision = Convert.ToString(dataReader["Comision"]);
                    la_propiedad.estado = this.transformarEstadoDB(Convert.ToString(dataReader["Estado"]));
                    la_propiedad.fecha_registro = Convert.ToString(dataReader["FechaRegistro"]);
                    la_propiedad.area = Convert.ToString(dataReader["Area"]);
                    la_propiedad.id_vendedor = Convert.ToString(dataReader["Nro_Documento_vendedor"]);
                    lista.Add(la_propiedad);
                }
                dataReader.Close();
                sqlCon.Close();
                return lista;
            }
            catch (Exception e)
            {
                String men = e.ToString();
                propiedad.conexion = men;
                return null;
            }

        }
        public string modificarPropiedad(PropiedadesBean propiedad) {
            try
            {
                String cadenaConfiguracion = ConfigurationManager.ConnectionStrings["SoftBully"].ConnectionString;
                SqlConnection sqlCon = new SqlConnection(cadenaConfiguracion);
                sqlCon.Open();


                string commandString = "UPDATE propiedad_en_venta SET Direccion = '"+propiedad.direccion+"', PrecioBase = "+propiedad.precio_base+", Estado = "+this.transformarEstado(propiedad.estado)+", Area = "+propiedad.area+", Nro_Documento_vendedor = '"+propiedad.id_vendedor+"' WHERE (Id_Propiedad = '"+propiedad.id_propiedad+"')";
                SqlCommand sqlCmd = new SqlCommand(commandString, sqlCon);
                sqlCmd.ExecuteNonQuery();
                sqlCon.Close();
                propiedad.conexion = "OK";

            }
            catch (Exception e)
            {
                return e.ToString();
            }
            return propiedad.conexion;
        }

        public string transformarEstado(string estado) {
            if(String.Equals(estado,"en Venta"))return "1";
            if (String.Equals(estado, "Vendido")) return "2";
            if (String.Equals(estado, "solo Registrado")) return "3";
            return "4";
        }

        public string transformarEstadoDB(string estadoDB) {
            if (String.Equals(estadoDB,"1")) return "en Venta";
            if (String.Equals(estadoDB,"2")) return "Vendido";
            if (String.Equals(estadoDB,"3")) return  "solo Registrado";
            return "???(ERROR!)";
        }

        public void get_commandString(PropiedadesBean propiedad) {

            if (propiedad.direccion != null)
            {
                if (propiedad.id_vendedor == null)
                {
                    if (String.Equals(propiedad.estado, "Todos"))
                    {
                        this.globalauxiliar = "SELECT Id_Propiedad, Direccion, PrecioBase, Comision, Estado, FechaRegistro, Area, Nro_Documento_vendedor FROM propiedad_en_venta WHERE (Estado < > 0) AND (Direccion LIKE'%" + propiedad.direccion.Trim() + "%')";
                    }
                    else
                    {
                        this.globalauxiliar = "SELECT Id_Propiedad, Direccion, PrecioBase, Comision, Estado, FechaRegistro, Area, Nro_Documento_vendedor FROM propiedad_en_venta WHERE (Estado = " + this.transformarEstado(propiedad.estado) + ") AND (Direccion LIKE'%" + propiedad.direccion.Trim() + "%')";
                    }

                }
                else
                {
                    if (String.Equals(propiedad.estado, "Todos"))
                    {
                        this.globalauxiliar = "SELECT Id_Propiedad, Direccion, PrecioBase, Comision, Estado, FechaRegistro, Area, Nro_Documento_vendedor FROM propiedad_en_venta WHERE ((Nro_Documento_vendedor='" + propiedad.id_vendedor + "')  AND(Estado < > 0)) AND (Direccion LIKE'%" + propiedad.direccion.Trim() + "%')";
                    }
                    else
                    {
                        this.globalauxiliar = "SELECT Id_Propiedad, Direccion, PrecioBase, Comision, Estado, FechaRegistro, Area, Nro_Documento_vendedor FROM propiedad_en_venta WHERE ((Nro_Documento_vendedor='" + propiedad.id_vendedor + "')  AND (Estado = " + this.transformarEstado(propiedad.estado) + ")) AND (Direccion LIKE'%" + propiedad.direccion.Trim() + "%')";
                    }

                }

            }
            else {
                if (propiedad.id_vendedor == null)
                {
                    if (String.Equals(propiedad.estado, "Todos"))
                    {
                        this.globalauxiliar = "SELECT Id_Propiedad, Direccion, PrecioBase, Comision, Estado, FechaRegistro, Area, Nro_Documento_vendedor FROM propiedad_en_venta WHERE (Estado < > 0) ";
                    }
                    else
                    {
                        this.globalauxiliar = "SELECT Id_Propiedad, Direccion, PrecioBase, Comision, Estado, FechaRegistro, Area, Nro_Documento_vendedor FROM propiedad_en_venta WHERE (Estado = " + this.transformarEstado(propiedad.estado) + ")";
                    }

                }
                else
                {
                    if (String.Equals(propiedad.estado, "Todos"))
                    {
                        this.globalauxiliar = "SELECT Id_Propiedad, Direccion, PrecioBase, Comision, Estado, FechaRegistro, Area, Nro_Documento_vendedor FROM propiedad_en_venta WHERE ((Nro_Documento_vendedor='" + propiedad.id_vendedor + "')  AND(Estado < > 0)) ";
                    }
                    else
                    {
                        this.globalauxiliar = "SELECT Id_Propiedad, Direccion, PrecioBase, Comision, Estado, FechaRegistro, Area, Nro_Documento_vendedor FROM propiedad_en_venta WHERE ((Nro_Documento_vendedor='" + propiedad.id_vendedor + "')  AND (Estado = " + this.transformarEstado(propiedad.estado) + ")) ";
                    }

                }
            
            
            }
            
            
            
        }
         //        direccion: $("#Direccion").attr("value"),
         //precio_base: $("#PrecioBase").attr("value"),
         //estado: $("#EstadoSelect").attr("value"),
         //area: $("#Area").attr("value"),
         //id_distrito: $("#Distrito").attr("value"),
         //id_vendedor: $("#Vendedor").attr("value")
    }
}